﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace eRechnung.ExtensionMethods
{
    public static class ExtensionMethods
    {
        public static bool IsAlphaNum(this string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return false;
            }
            Regex r = new Regex("^[a-zA-Z0-9]*$");
            if (r.IsMatch(str))
            {
                return true;
            }
            return false;
        }

        public static bool IsNumeric(this string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return false;
            }
            Regex r = new Regex("^[0-9]*$");
            if (r.IsMatch(str))
            {
                return true;
            }
            return false;
        }

#if ebInterface4Bund
        public static string ValidateOrderRefBund(string oIdText)
        {
            /*
             * Regeln:
             * 3-stellig alphanumerisch oder
             * 3-stellig alphanumerisch ":" Irgendwas (Gesamtlänge maximal 35 Stellen)
             * 10-stellig numerisch
             */
            int tLen = oIdText.Length;

            switch (tLen)
            {
                case 3:
                    if (!oIdText.IsAlphaNum())
                    {
                        return "Auftragsreferenz nicht drei-stellig alpha-numerisch.";
                    }
                    break;
                case 10:
                    if (!oIdText.IsNumeric())
                    {
                        return "Auftragsreferenz nicht 10-stellig numerisch.";
                    }

                    break;
                default:
                    if (!oIdText.Contains(":"))
                    {
                        return "Auftragsreferenz ungültig.";
                    }
                    if (tLen > 35)
                    {
                        return "Auftragsreferenz enthält mehr als 35 Zeichen.";
                    }
                    string x1 = oIdText.Substring(3, 1);
                    if (x1 != ":")
                    {
                        return "Austragsreferenz enthält keinen Doppelpunkt an der 4. Stelle.";
                    }
                    string[] xSplt = oIdText.Split(':');
                    if (xSplt[1].Length < 1)
                    {
                        return "Auftragsreferenz enthält keine Zeichen nach dem Doppelpunkt.";
                    }
                    string x2 = oIdText.Substring(0, 3);
                    if (!x2.IsAlphaNum())
                    {
                        return "In Auftragsreferenz sind die ersten drei Stellen nicht alpha-numerisch.";
                    }
                    break;
            }

            return "";

        }
#endif
    }
}
